package cn.westv.scps.service.agent;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import cn.westv.scps.domain.PublishAgentEntity;
import cn.westv.scps.utils.Page;
import cn.westv.scps.web.controller.agent.vo.AgentFormVO;

/**
 * 运营商管理
 * @author Administrator
 *
 */
public interface IAgentService {

	/**
	 * 按条件查询运营商信息
	 * @param hql
	 * @param publishAgentEntity 
	 * @param params 条件参数
	 * @return
	 */
	public  List<PublishAgentEntity> find(String hql, Class<PublishAgentEntity> publishAgentEntity, Object[] params);

	/**
	 * 根据代理商id获取代理商信息
	 * @param publishAgentEntity
	 * @param agentId 代理商id
	 * @return  
	 */
	public PublishAgentEntity get(Class<PublishAgentEntity> publishAgentEntity, Serializable agentId);

	/**
	 * 分页查询
	 * @param hql
	 * @param page 
	 * @param publishAgentEntity
	 * @param params
	 * @return  
	 */
	public Page<PublishAgentEntity> findPage(String hql, Page<PublishAgentEntity> page, Class<PublishAgentEntity> publishAgentEntity, Object[] params);

	/**
	 * 新增或修改
	 * @param publishAgentEntity
	 * @return 新增或修改的代理商id
	 */
	public String saveOrUpdate(PublishAgentEntity publishAgentEntity);

	/**
	 * 保存代理商信息（增加）
	 * @param publishAgentEntity
	 * @return  增加的代理商的id
	 */
	public String save(PublishAgentEntity publishAgentEntity);

	/**
	 * 更新（修改）
	 * @param publishAgentEntity
	 * @return  修改的代理商id
	 */
	public String update(PublishAgentEntity publishAgentEntity);

	/**
	 * 批量新增和修改
	 * @param entitys
	 */
	public void saveOrUpdateAll(Collection<PublishAgentEntity> entitys);

	/**
	 * 根据代理商id删除某个代理商
	 * @param publishAgentEntity
	 * @param agentId 代理商id
	 * @return 
	 */
	public String deleteById(Class<PublishAgentEntity> publishAgentEntity, Serializable agentId);

	/**
	 * 批量删除代理商
	 * @param publishAgentEntity
	 * @param ids 
	 */
	public void delete(Class<PublishAgentEntity> publishAgentEntity, Serializable[] ids);

	/**
	 * 根据sql查询查询所有
	 * @param SQL
	 * @param params
	 * @param publishAgentEntity
	 * @return
	 */
	public List<PublishAgentEntity> querySQL(String SQL, Object[] params, Class<PublishAgentEntity> publishAgentEntity);
	
	/**
	 * 根据  代理商账号 模糊查询代理商
	 * @param account
	 * @return
	 */
	public PublishAgentEntity findAgentByAccount(String account);
	
	
}
